package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs11 {

	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// TARJETA
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TARJETA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			java.text.SimpleDateFormat simpledf = new java.text.SimpleDateFormat(
					"yyyy/MM/dd");
			java.util.Date fecha;

			fecha = simpledf.parse("2008/03/03");
			java.sql.Date fechaSql = new java.sql.Date(fecha.getTime());
			fecha = simpledf.parse("2008/03/11");
			java.sql.Date fechaSql2 = new java.sql.Date(fecha.getTime());

			InstitucionFinancieraTO insFinTO = new InstitucionFinancieraTO();
			insFinTO.setIdInstitucionFinanciera(1);
			TipoTarjetaTO tipoTarTO = new TipoTarjetaTO();
			tipoTarTO.setIdTipoTarjeta((short) 1);

			TarjetaDAO tarjetaDAO = fabricaMySQL.getTarjetaDAO();
			TarjetaTO tarjetaTO = new TarjetaTO(0, "2", "3", fechaSql,
					insFinTO, tipoTarTO);

			// insert
			if (tarjetaDAO.insertTarjeta(tarjetaTO)) {
				tarjetaDAO.insertTarjeta(tarjetaTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza
			tarjetaTO.setIdTarjeta(1);
			tarjetaTO.setNumero("9999999");

			resultado = tarjetaDAO.updateTarjeta(tarjetaTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			tarjetaTO = tarjetaDAO.findTarjetaById(1);
			if (tarjetaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TARJETA");
				ImprimirTO.Imprime(tarjetaTO);

				System.out.println("INSFINANICIERA");
				ImprimirTO.Imprime(tarjetaTO.getInstitucionFinancieraTO());

				System.out.println("TIPOTARJETA");
				ImprimirTO.Imprime(tarjetaTO.getTipoTarjetaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out
					.println("------------------------- BUSQUEDA POR NUMERO INSFIN");
			tarjetaTO = tarjetaDAO.findTarjetaByNumeroInstitucion("9999999", 1);
			if (tarjetaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TARJETA");
				ImprimirTO.Imprime(tarjetaTO);

				System.out.println("INSFINANICIERA");
				ImprimirTO.Imprime(tarjetaTO.getInstitucionFinancieraTO());

				System.out.println("TIPOTARJETA");
				ImprimirTO.Imprime(tarjetaTO.getTipoTarjetaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT TARJETA +**");
			java.util.Collection<TarjetaTO> listTarjetaTO = tarjetaDAO
					.selectTarjeta();
			for (int i = 0; i < listTarjetaTO.size(); i++) {
				tarjetaTO = ((ArrayList<TarjetaTO>) listTarjetaTO).get(i);
				System.out.println("TARJETA");
				ImprimirTO.Imprime(tarjetaTO);

				System.out.println("INSFINANICIERA");
				ImprimirTO.Imprime(tarjetaTO.getInstitucionFinancieraTO());

				System.out.println("TIPOTARJETA");
				ImprimirTO.Imprime(tarjetaTO.getTipoTarjetaTO());

			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT TARJETA BY FECHA +**");
			listTarjetaTO = tarjetaDAO.selectTarjetaByRangoFecha(fechaSql,
					fechaSql2);
			for (int i = 0; i < listTarjetaTO.size(); i++) {
				tarjetaTO = ((ArrayList<TarjetaTO>) listTarjetaTO).get(i);
				System.out.println("TARJETA");
				ImprimirTO.Imprime(tarjetaTO);

				System.out.println("INSFINANICIERA");
				ImprimirTO.Imprime(tarjetaTO.getInstitucionFinancieraTO());

				System.out.println("TIPOTARJETA");
				ImprimirTO.Imprime(tarjetaTO.getTipoTarjetaTO());

			}

			// Busca
			System.out
					.println("------------------- BUSQUEDA POR INSTITUCIONFINANCIERA");
			tarjetaTO = tarjetaDAO.selectTarjetaByInstitucionFinanciera(1);
			if (tarjetaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TARJETA");

				for (int x = 0; x < tarjetaTO.getListIdTarjeta().length; x++) {
					System.out.println("IDTARJETA");
					System.out.println(tarjetaTO.getListIdTarjeta()[x]);
				}
				for (int x = 0; x < tarjetaTO.getListNumero().length; x++) {
					System.out.println("NUMERO");
					System.out.println(tarjetaTO.getListNumero()[x]);
				}

				for (int x = 0; x < tarjetaTO.getListCodigo().length; x++) {
					System.out.println("CODIGO");
					System.out.println(tarjetaTO.getListCodigo()[x]);
				}
				for (int x = 0; x < tarjetaTO.getListFecha().length; x++) {
					System.out.println("FECHA");
					System.out.println(tarjetaTO.getListFecha()[x]);
				}
				for (int x = 0; x < tarjetaTO.getListTipoTarjetaTO().length; x++) {
					System.out.println("TIPOTARJETA");
					ImprimirTO.Imprime(tarjetaTO.getListTipoTarjetaTO()[x]);
				}

				System.out.println("INSFINANICIERA");
				ImprimirTO.Imprime(tarjetaTO.getInstitucionFinancieraTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOTARJETA");
			tarjetaTO = tarjetaDAO.selectTarjetaByTipoTrajeta((short) 1);
			if (tarjetaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TARJETA");

				for (int x = 0; x < tarjetaTO.getListIdTarjeta().length; x++) {
					System.out.println("IDTARJETA");
					System.out.println(tarjetaTO.getListIdTarjeta()[x]);
				}
				for (int x = 0; x < tarjetaTO.getListNumero().length; x++) {
					System.out.println("NUMERO");
					System.out.println(tarjetaTO.getListNumero()[x]);
				}

				for (int x = 0; x < tarjetaTO.getListCodigo().length; x++) {
					System.out.println("CODIGO");
					System.out.println(tarjetaTO.getListCodigo()[x]);
				}
				for (int x = 0; x < tarjetaTO.getListFecha().length; x++) {
					System.out.println("FECHA");
					System.out.println(tarjetaTO.getListFecha()[x]);
				}
				for (int x = 0; x < tarjetaTO.getListInstitucionFinancieraTO().length; x++) {
					System.out.println("INSFINANICIERA");
					ImprimirTO.Imprime(tarjetaTO
							.getListInstitucionFinancieraTO()[x]);
				}

				System.out.println("TIPOTARJETA");
				ImprimirTO.Imprime(tarjetaTO.getTipoTarjetaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// TIPOSERVICIO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TIPOSERVICIO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			CategoriaServicioTO catSerTO = new CategoriaServicioTO();
			catSerTO.setIdCategoriaServicio((short) 2);
			CategoriaServicioTO scatSerTO = new CategoriaServicioTO();
			scatSerTO.setIdCategoriaServicio((short) 7);
			FactorTO factorTO = new FactorTO();
			factorTO.setIdFactor((short) 1);

			TipoServicioDAO tipoServicioDAO = fabricaMySQL.getTipoServicioDAO();
			TipoServicioTO tipoServicioTO = new TipoServicioTO(0, catSerTO,
					scatSerTO, factorTO);

			// insert
			if (tipoServicioDAO.insertTipoServicio(tipoServicioTO)) {
				tipoServicioDAO.insertTipoServicio(tipoServicioTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza
			scatSerTO.setIdCategoriaServicio((short) 8);
			tipoServicioTO.setIdTipoServicio(1);
			tipoServicioTO.setSubcategoriaServicioTO(scatSerTO);

			resultado = tipoServicioDAO.updateTipoServicio(tipoServicioTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			tipoServicioTO = tipoServicioDAO.findTipoServicioById(1);
			if (tipoServicioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOSERVICIO");
				ImprimirTO.Imprime(tipoServicioTO);

				System.out.println("CATEGORIASER");
				ImprimirTO.Imprime(tipoServicioTO.getCategoriaServicioTO());

				System.out.println("SUBCATEGORIASER");
				ImprimirTO.Imprime(tipoServicioTO.getSubcategoriaServicioTO());

				System.out.println("FACTOR");
				ImprimirTO.Imprime(tipoServicioTO.getFactorTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out
					.println("------------------------- BUSQUEDA POR CATEGORIA SUBACATEGORIA");
			tipoServicioTO = tipoServicioDAO
					.findTipoServicioByCategoriaSubCAtegoria((short) 1,
							(short) 10);
			if (tipoServicioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOSERVICIO");
				ImprimirTO.Imprime(tipoServicioTO);

				System.out.println("CATEGORIASER");
				ImprimirTO.Imprime(tipoServicioTO.getCategoriaServicioTO());

				System.out.println("SUBCATEGORIASER");
				ImprimirTO.Imprime(tipoServicioTO.getSubcategoriaServicioTO());

				System.out.println("FACTOR");
				ImprimirTO.Imprime(tipoServicioTO.getFactorTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT TIPOSERVICIO +**");
			java.util.Collection<TipoServicioTO> listTipoServicioTO = tipoServicioDAO
					.selectTipoServicio();
			System.out.println("........................................................ -- " + listTipoServicioTO.size());
			if (listTipoServicioTO != null) {
				for (int i = 0; i < listTipoServicioTO.size(); i++) {
					tipoServicioTO = ((ArrayList<TipoServicioTO>) listTipoServicioTO)
							.get(i);
					System.out.println("TIPOSERVICIO");
					ImprimirTO.Imprime(tipoServicioTO);

					System.out.println("CATEGORIASER");
					ImprimirTO.Imprime(tipoServicioTO.getCategoriaServicioTO());

					System.out.println("SUBCATEGORIASER");
					ImprimirTO.Imprime(tipoServicioTO
							.getSubcategoriaServicioTO());

					System.out.println("FACTOR");
					ImprimirTO.Imprime(tipoServicioTO.getFactorTO());
				}
			} else {
				System.out.println("NO HUBO RESULTADOS");
			}

			// Busca
			System.out
					.println("------------------- BUSQUEDA POR CATEGORIASERVICIO");
			tipoServicioTO = tipoServicioDAO
					.selectTipoServicioByCategoriaServicio((short) 2);

			if (tipoServicioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOSERVICIO");

				for (int x = 0; x < tipoServicioTO.getListIdTipoServicio().length; x++) {
					System.out.println("IDTIPOSERVICIO");
					System.out
							.println(tipoServicioTO.getListIdTipoServicio()[x]);
				}

				for (int x = 0; x < tipoServicioTO.getListSubCategoriaTO().length; x++) {
					System.out.println("SUBCATEGORIASER");
					ImprimirTO
							.Imprime(tipoServicioTO.getListSubCategoriaTO()[x]);
				}
				for (int x = 0; x < tipoServicioTO.getListFactorTO().length; x++) {
					System.out.println("FACTOR");
					ImprimirTO.Imprime(tipoServicioTO.getListFactorTO()[x]);
				}

				System.out.println("CATEGORIASER");
				ImprimirTO.Imprime(tipoServicioTO.getCategoriaServicioTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out
					.println("------------------- BUSQUEDA POR SUBCATEGORIASERVICIO");
			tipoServicioTO = tipoServicioDAO
					.selectTipoServicioBySubCategoria((short) 2);

			if (tipoServicioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOSERVICIO");

				for (int x = 0; x < tipoServicioTO.getListIdTipoServicio().length; x++) {
					System.out.println("IDTIPOSERVICIO");
					System.out
							.println(tipoServicioTO.getListIdTipoServicio()[x]);
				}
				for (int x = 0; x < tipoServicioTO.getListCategoriaServicioTO().length; x++) {
					System.out.println("CATEGORIASERVICIO");
					ImprimirTO.Imprime(tipoServicioTO
							.getListCategoriaServicioTO()[x]);
				}

				for (int x = 0; x < tipoServicioTO.getListFactorTO().length; x++) {
					System.out.println("FACTOR");
					ImprimirTO.Imprime(tipoServicioTO.getListFactorTO()[x]);
				}

				System.out.println("SUBCATEGORIA");
				ImprimirTO.Imprime(tipoServicioTO.getSubcategoriaServicioTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR FACTOR");
			tipoServicioTO = tipoServicioDAO
					.selectTipoServicioByFactor(2);

			if (tipoServicioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOSERVICIO");

				for (int x = 0; x < tipoServicioTO.getListIdTipoServicio().length; x++) {
					System.out.println("IDTIPOSERVICIO");
					System.out
							.println(tipoServicioTO.getListIdTipoServicio()[x]);
				}
				for (int x = 0; x < tipoServicioTO.getListCategoriaServicioTO().length; x++) {
					System.out.println("CATEGORIASERVICIO");
					ImprimirTO.Imprime(tipoServicioTO
							.getListCategoriaServicioTO()[x]);
				}

				for (int x = 0; x < tipoServicioTO.getListSubCategoriaTO().length; x++) {
					System.out.println("SUBCATEGORIASER");
					ImprimirTO
							.Imprime(tipoServicioTO.getListSubCategoriaTO()[x]);
				}

				System.out.println("FACTOR");
				ImprimirTO.Imprime(tipoServicioTO.getFactorTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

	}
}
